package com.itheima.app.controller;

import com.itheima.app.manager.UserManager;
import com.itheima.domain.db.User;
import com.itheima.domain.db.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Map;

/**
 * @Author 请不要叫我高司令
 * @Date 2022/3/13 21:27
 * @Version 1.0
 */

@RestController
public class UserController {

    @Autowired
    private UserManager userManager;

    // 保存用户
    @PostMapping("/user/save")
    public ResponseEntity save(@RequestBody User user) {
        return userManager.save(user); // 状态码200  ，请求体存用户id
    }

    // 查询用户
    @GetMapping("/user/findByPhone")
    public ResponseEntity findByPhone(String phone) {
        return userManager.findByPhone(phone);
    }


    // 发送验证码
    @PostMapping("/user/login")
    public void sendSms(@RequestBody Map<String, String> param) {

        //1.取出手机号
        String phone = param.get("phone");
        //调用manager
        userManager.sendSms(phone);


    }

    //注册、登录
    @PostMapping("/user/loginVerification")
    public ResponseEntity loginVerification(@RequestBody Map<String, String> param) {

        //1.取出参数
        String phone = param.get("phone");
        String verificationCode = param.get("verificationCode");

        return userManager.loginVerification(phone, verificationCode);
    }


    //完善用户基本信息
    @PostMapping("/user/loginReginfo")
    public ResponseEntity loginReginfo(@RequestBody UserInfo userInfo, @RequestHeader("Authorization") String token) {
        return userManager.loginReginfo(userInfo, token);
    }


    //完善用户头像信息
    @PostMapping({"/user/loginReginfo/head","/users/header"})
    public ResponseEntity loginReginfoHead(MultipartFile headPhoto, @RequestHeader("Authorization") String token) throws IOException {

        return userManager.loginReginfoHead(headPhoto, token);

    }

    //查询用户基本信息
    @GetMapping("/users")
    public ResponseEntity findUserInfoVo(Long userID,@RequestHeader("Authorization") String token){


        if (userID != null) {
            return userManager.findUserInfoVo(userID);
        } else {

            User user = userManager.findUserByToken(token);
            return userManager.findUserInfoVo(user.getId());

        }
    }


    //更新用户基本信息
    @PutMapping("/users")
    public void putUserInfo(@RequestBody UserInfo userInfo) {

        userManager.putUserInfo(userInfo);

    }




}




































